package com.xadrez.modelo;

import com.xadrez.Principal;
import java.util.ArrayList;
import java.util.List;

public class Peao extends Peca {

    private boolean primeiroMovimento;

    public Peao() {
    }

    public Peao(Jogador jogador) {
        super(jogador);
        primeiroMovimento = true;
    }

    public boolean isPrimeiroMovimento() {
        return primeiroMovimento;
    }

    public void setPrimeiroMovimento(boolean primeiroMovimento) {
        this.primeiroMovimento = primeiroMovimento;
    }

    @Override
    public List<Posicao> recuperaMovimentosPossiveis(){
        //Primeiro recuperamos a posição da casa onde se encontra a peca.
        int posicaoX = this.getPosicaoNoTabuleiro().getX();
        int posicaoY = this.getPosicaoNoTabuleiro().getY();

        Tabuleiro tabuleiro = Principal.getTabuleiro();
        List<Posicao> lista = new ArrayList<Posicao>();

        //Verifica se (x,y) é uma posição legal para mover.
        if (primeiroMovimento) {
            if (!tabuleiro.temPecaDoJogadorNaPosicao(posicaoX - 1, posicaoY)) {
                lista.add(new Posicao(posicaoX - 1, posicaoY));
            }
            if (!tabuleiro.temPecaDoJogadorNaPosicao(posicaoX - 2, posicaoY)) {
                lista.add(new Posicao(posicaoX - 2, posicaoY));
            }
        } else {
            if (!tabuleiro.temPecaDoJogadorNaPosicao(posicaoX - 1, posicaoY) && !tabuleiro.temAdversarioNaPosicao(posicaoX - 1, posicaoY)) {
                lista.add(new Posicao(posicaoX - 1, posicaoY));
            }
            if (tabuleiro.temAdversarioNaPosicao(posicaoX - 1, posicaoY - 1)) {
                lista.add(new Posicao(posicaoX - 1, posicaoY - 1));
            }
            if (tabuleiro.temAdversarioNaPosicao(posicaoX - 1, posicaoY + 1)) {
                lista.add(new Posicao(posicaoX - 1, posicaoY + 1));
            }
        }

        if (lista.isEmpty()) {
            lista = null;
        }

        return lista;
    }

    @Override
    public String toString() {
        return "peao";
    }
}
